Code coverage report for src/content-selector.js

Statements: 26.87% (18 / 67)      Branches: 10.71% (3 / 28)      Functions: 28.57% (4 / 14)      Lines: 27.69% (18 / 65)      Ignored: none     

All files » src/ » content-selector.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 1391     1   1   1                     1   1       1           1   1 1                 1                                                                                 1       1       1                         1                             1                       1     1        
System.register(['core-js'], function (_export) {
  'use strict';
 
  var core, proto, placeholder, ContentSelector;
 
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
 
  function findInsertionPoint(groups, index) {
    var insertionPoint;
 
    while (!insertionPoint && index >= 0) {
      insertionPoint = groups[index][0];
      index--;
    }
 
    return insertionPoint;
  }
 
  return {
    setters: [function (_coreJs) {
      core = _coreJs['default'];
    }],
    execute: function () {
 
      Iif (Element && !Element.prototype.matches) {
        proto = Element.prototype;
 
        proto.matches = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector;
      }
 
      placeholder = [];
 
      ContentSelector = (function () {
        function ContentSelector(anchor, selector) {
          _classCallCheck(this, ContentSelector);
 
          this.anchor = anchor;
          this.selector = selector;
          this.all = !this.selector;
          this.groups = [];
        }
 
        ContentSelector.applySelectors = function applySelectors(view, contentSelectors, callback) {
          var currentChild = view.fragment.firstChild,
              contentMap = new Map(),
              nextSibling,
              i,
              ii,
              contentSelector;
 
          while (currentChild) {
            nextSibling = currentChild.nextSibling;
 
            if (currentChild.viewSlot) {
              var viewSlotSelectors = contentSelectors.map(function (x) {
                return x.copyForViewSlot();
              });
              currentChild.viewSlot.installContentSelectors(viewSlotSelectors);
            } else {
              for (i = 0, ii = contentSelectors.length; i < ii; i++) {
                contentSelector = contentSelectors[i];
                if (contentSelector.matches(currentChild)) {
                  var elements = contentMap.get(contentSelector);
                  if (!elements) {
                    elements = [];
                    contentMap.set(contentSelector, elements);
                  }
 
                  elements.push(currentChild);
                  break;
                }
              }
            }
 
            currentChild = nextSibling;
          }
 
          for (i = 0, ii = contentSelectors.length; i < ii; ++i) {
            contentSelector = contentSelectors[i];
            callback(contentSelector, contentMap.get(contentSelector) || placeholder);
          }
        };
 
        ContentSelector.prototype.copyForViewSlot = function copyForViewSlot() {
          return new ContentSelector(this.anchor, this.selector);
        };
 
        ContentSelector.prototype.matches = function matches(node) {
          return this.all || node.nodeType === 1 && node.matches(this.selector);
        };
 
        ContentSelector.prototype.add = function add(group) {
          var anchor = this.anchor,
              parent = anchor.parentNode,
              i,
              ii;
 
          for (i = 0, ii = group.length; i < ii; ++i) {
            parent.insertBefore(group[i], anchor);
          }
 
          this.groups.push(group);
        };
 
        ContentSelector.prototype.insert = function insert(index, group) {
          if (group.length) {
            var anchor = findInsertionPoint(this.groups, index) || this.anchor,
                parent = anchor.parentNode,
                i,
                ii;
 
            for (i = 0, ii = group.length; i < ii; ++i) {
              parent.insertBefore(group[i], anchor);
            }
          }
 
          this.groups.splice(index, 0, group);
        };
 
        ContentSelector.prototype.removeAt = function removeAt(index, fragment) {
          var group = this.groups[index],
              i,
              ii;
 
          for (i = 0, ii = group.length; i < ii; ++i) {
            fragment.appendChild(group[i]);
          }
 
          this.groups.splice(index, 1);
        };
 
        return ContentSelector;
      })();
 
      _export('ContentSelector', ContentSelector);
    }
  };
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL3RlbXBsYXRpbmcvc3JjL2NvbnRlbnQtc2VsZWN0b3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1lBR1EsS0FBSyxFQU1ULFdBQVcsRUFhRixlQUFlOzs7O0FBWDVCLFdBQVMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztBQUN4QyxRQUFJLGNBQWMsQ0FBQzs7QUFFbkIsV0FBTSxDQUFDLGNBQWMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFDO0FBQ2xDLG9CQUFjLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLFdBQUssRUFBRSxDQUFDO0tBQ1Q7O0FBRUQsV0FBTyxjQUFjLENBQUM7R0FDdkI7Ozs7Ozs7O0FBbEJELFVBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7QUFDbkMsYUFBSyxHQUFHLE9BQU8sQ0FBQyxTQUFTOztBQUM3QixhQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQ25DLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsaUJBQWlCLElBQ25ELEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUM7T0FDM0Q7O0FBRUcsaUJBQVcsR0FBRyxFQUFFOztBQWFQLHFCQUFlO0FBcUNmLGlCQXJDQSxlQUFlLENBcUNkLE1BQU0sRUFBRSxRQUFRLEVBQUM7Z0NBckNsQixlQUFlOztBQXNDeEIsY0FBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsY0FBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDekIsY0FBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDMUIsY0FBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7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IER1cmFuZGFsIFByb2plY3QvYXVyZWxpYS90ZW1wbGF0aW5nL3NyYy9jb250ZW50LXNlbGVjdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvcmUgZnJvbSAnY29yZS1qcyc7XG5cbmlmIChFbGVtZW50ICYmICFFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzKSB7XG4gICAgdmFyIHByb3RvID0gRWxlbWVudC5wcm90b3R5cGU7XG4gICAgcHJvdG8ubWF0Y2hlcyA9IHByb3RvLm1hdGNoZXNTZWxlY3RvciB8fFxuICAgICAgcHJvdG8ubW96TWF0Y2hlc1NlbGVjdG9yIHx8IHByb3RvLm1zTWF0Y2hlc1NlbGVjdG9yIHx8XG4gICAgICBwcm90by5vTWF0Y2hlc1NlbGVjdG9yIHx8IHByb3RvLndlYmtpdE1hdGNoZXNTZWxlY3Rvcjtcbn1cblxudmFyIHBsYWNlaG9sZGVyID0gW107XG5cbmZ1bmN0aW9uIGZpbmRJbnNlcnRpb25Qb2ludChncm91cHMsIGluZGV4KXtcbiAgdmFyIGluc2VydGlvblBvaW50O1xuXG4gIHdoaWxlKCFpbnNlcnRpb25Qb2ludCAmJiBpbmRleCA+PSAwKXtcbiAgICBpbnNlcnRpb25Qb2ludCA9IGdyb3Vwc1tpbmRleF1bMF07XG4gICAgaW5kZXgtLTtcbiAgfVxuXG4gIHJldHVybiBpbnNlcnRpb25Qb2ludDtcbn1cblxuZXhwb3J0IGNsYXNzIENvbnRlbnRTZWxlY3RvciB7XG4gIHN0YXRpYyBhcHBseVNlbGVjdG9ycyh2aWV3LCBjb250ZW50U2VsZWN0b3JzLCBjYWxsYmFjayl7XG4gICAgdmFyIGN1cnJlbnRDaGlsZCA9IHZpZXcuZnJhZ21lbnQuZmlyc3RDaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgY29udGVudE1hcCA9IG5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgbmV4dFNpYmxpbmcsIGksIGlpLCBjb250ZW50U2VsZWN0b3I7XG5cbiAgICB3aGlsZSAoY3VycmVudENoaWxkKSB7XG4gICAgICBuZXh0U2libGluZyA9IGN1cnJlbnRDaGlsZC5uZXh0U2libGluZztcblxuICAgICAgaWYoY3VycmVudENoaWxkLnZpZXdTbG90KXtcbiAgICAgICAgdmFyIHZpZXdTbG90U2VsZWN0b3JzID0gY29udGVudFNlbGVjdG9ycy5tYXAoeCA9PiB4LmNvcHlGb3JWaWV3U2xvdCgpKTtcbiAgICAgICAgY3VycmVudENoaWxkLnZpZXdTbG90Lmluc3RhbGxDb250ZW50U2VsZWN0b3JzKHZpZXdTbG90U2VsZWN0b3JzKTtcbiAgICAgIH1lbHNle1xuICAgICAgICBmb3IoaSA9IDAsIGlpID0gY29udGVudFNlbGVjdG9ycy5sZW5ndGg7IGkgPCBpaTsgaSsrKXtcbiAgICAgICAgICBjb250ZW50U2VsZWN0b3IgPSBjb250ZW50U2VsZWN0b3JzW2ldO1xuICAgICAgICAgIGlmKGNvbnRlbnRTZWxlY3Rvci5tYXRjaGVzKGN1cnJlbnRDaGlsZCkpe1xuICAgICAgICAgICAgdmFyIGVsZW1lbnRzID0gY29udGVudE1hcC5nZXQoY29udGVudFNlbGVjdG9yKTtcbiAgICAgICAgICAgIGlmKCFlbGVtZW50cyl7XG4gICAgICAgICAgICAgIGVsZW1lbnRzID0gW107XG4gICAgICAgICAgICAgIGNvbnRlbnRNYXAuc2V0KGNvbnRlbnRTZWxlY3RvciwgZWxlbWVudHMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlbGVtZW50cy5wdXNoKGN1cnJlbnRDaGlsZCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY3VycmVudENoaWxkID0gbmV4dFNpYmxpbmc7XG4gICAgfVxuXG4gICAgZm9yKGkgPSAwLCBpaSA9IGNvbnRlbnRTZWxlY3RvcnMubGVuZ3RoOyBpIDwgaWk7ICsraSl7XG4gICAgICBjb250ZW50U2VsZWN0b3IgPSBjb250ZW50U2VsZWN0b3JzW2ldO1xuICAgICAgY2FsbGJhY2soY29udGVudFNlbGVjdG9yLCBjb250ZW50TWFwLmdldChjb250ZW50U2VsZWN0b3IpIHx8IHBsYWNlaG9sZGVyKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihhbmNob3IsIHNlbGVjdG9yKXtcbiAgICB0aGlzLmFuY2hvciA9IGFuY2hvcjtcbiAgICB0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgdGhpcy5hbGwgPSAhdGhpcy5zZWxlY3RvcjtcbiAgICB0aGlzLmdyb3VwcyA9IFtdO1xuICB9XG5cbiAgY29weUZvclZpZXdTbG90KCl7XG4gICAgcmV0dXJuIG5ldyBDb250ZW50U2VsZWN0b3IodGhpcy5hbmNob3IsIHRoaXMuc2VsZWN0b3IpO1xuICB9XG5cbiAgbWF0Y2hlcyhub2RlKXtcbiAgICByZXR1cm4gdGhpcy5hbGwgfHxcbiAgICAgIChub2RlLm5vZGVUeXBlID09PSAxICYmIG5vZGUubWF0Y2hlcyh0aGlzLnNlbGVjdG9yKSk7XG4gIH1cblxuICBhZGQoZ3JvdXApe1xuICAgIHZhciBhbmNob3IgPSB0aGlzLmFuY2hvcixcbiAgICAgICAgcGFyZW50ID0gYW5jaG9yLnBhcmVudE5vZGUsXG4gICAgICAgIGksIGlpO1xuXG4gICAgZm9yKGkgPSAwLCBpaSA9IGdyb3VwLmxlbmd0aDsgaSA8IGlpOyArK2kpe1xuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShncm91cFtpXSwgYW5jaG9yKTtcbiAgICB9XG5cbiAgICB0aGlzLmdyb3Vwcy5wdXNoKGdyb3VwKTtcbiAgfVxuXG4gIGluc2VydChpbmRleCwgZ3JvdXApe1xuICAgIGlmKGdyb3VwLmxlbmd0aCl7XG4gICAgICB2YXIgYW5jaG9yID0gZmluZEluc2VydGlvblBvaW50KHRoaXMuZ3JvdXBzLCBpbmRleCkgfHwgdGhpcy5hbmNob3IsXG4gICAgICAgICAgcGFyZW50ID0gYW5jaG9yLnBhcmVudE5vZGUsXG4gICAgICAgICAgaSwgaWk7XG5cbiAgICAgIGZvcihpID0gMCwgaWkgPSBncm91cC5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShncm91cFtpXSwgYW5jaG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmdyb3Vwcy5zcGxpY2UoaW5kZXgsIDAsIGdyb3VwKTtcbiAgfVxuXG4gIHJlbW92ZUF0KGluZGV4LCBmcmFnbWVudCl7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5ncm91cHNbaW5kZXhdLFxuICAgICAgICBpLCBpaTtcblxuICAgIGZvcihpID0gMCwgaWkgPSBncm91cC5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGdyb3VwW2ldKTtcbiAgICB9XG5cbiAgICB0aGlzLmdyb3Vwcy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG59XG4iXX0=